#ifndef TREADMILL_CONSTANTS_H
#define TREADMILL_CONSTANTS_H

#include <string>

class TreadMillConstants {
public:
    // 命令常量
    static const std::string APP_INIT;           // 应用初始化
    static const std::string APP_SETTING;        // 应用设置
    static const std::string APP_RESET;          // 应用重置
    static const std::string APP_SET_INCLINE;    // 设置倾斜度
    static const std::string APP_CALIBRATE;      // 校准
    static const std::string APP_DIAGNOSITICS;   // 诊断
    static const std::string APP_WORKOUT_DATA;    // 锻炼数据
    static const std::string APP_STATE_CHANGED;   // 状态改变
    static const std::string APP_ERROR;           // 错误

    // 头部常量
    static const std::string APP_HEADER;          // 应用头部

    // UCB 状态常量
    static const int UCB_STATE_STOPPED;      // 停止
    static const int UCB_STATE_RUNNING;      // 运行
    static const int UCB_STATE_READY;        // 准备
    static const int UCB_STATE_PAUSED;       // 暂停
    static const int UCB_STATE_ERROR;        // 错误
    static const int UCB_STATE_STOPPING;     // 停止中

    // 设置常量
    static const float SETTING_MPH_0;    // 0 MPH，0.5 mph/sec 加速
    static const float SETTING_MPH_1;    // 1 MPH，0.75 mph/sec 加速
    static const float SETTING_KPH_2;    // 2 KPH，0.8 kph/sec 加速
    static const float SETTING_KPH_3;    // 3 KPH，1.2 kph/sec 加速

    // 进度状态常量
    static const int CALIBRATE_PROGRESS_STARTED;         // 开始
    static const int CALIBRATE_PROGRESS_INCLINE_UP;      // 倾斜度上升
    static const int CALIBRATE_PROGRESS_INCLINE_DOWN;    // 倾斜度下降
    static const int CALIBRATE_PROGRESS_FINISHED;        // 完成
    static const int CALIBRATE_PROGRESS_ERROR;           // 错误

    static const int DIAGNOSITICS_OPTION_INCLINE;
    static const int DIAGNOSITICS_OPTION_SPEED;
    static const int DIAGNOSITICS_PROGRESS_STARTED;
    static const int DIAGNOSITICS_PROGRESS_FINISHED;

    // 错误代码常量
    static const int ERROR_SAFETY_KEY;            // 安全钥匙已激活
    static const int ERROR_NO_SPEED_SENSOR;       // 无速度传感器信号
    static const int ERROR_LOW_SPEED;             // 低速错误
    static const int ERROR_INCLINE_NOT_MOVED;     // 坡度未移动
    static const int ERROR_CALIBRATION_NEEDED;    // 需要校准
    static const int ERROR_MOTOR_RUNAWAY;         // 电机超速保护
    static const int ERROR_OVER_ACCELERATION;     // 超加速
    static const int ERROR_OVER_ACCELERATION_START; // 起始时超加速
    static const int ERROR_HIGH_SPEED;            // 高速错误

private:
    // 私有构造函数，防止实例化
    TreadMillConstants() = delete; // 禁止实例化
};

#endif // TREADMILL_CONSTANTS_H